Many modern day applications include the ability to retrieve and store data that is not necessarily stored at the computing device where a particular application is being executed. For instance, e-mail applications, such as Apple Inc.'s Apple Mail®, can retrieve and store data objects related to e-mail messages at one or more remote e-mail servers. Also, cloud-based data storage applications, such as Apple Inc.'s iCloud®, can retrieve and store data objects associated with photos, videos, documents, etc., with the assistance of server farms configured to store large amounts of data. In order efficiently store such large quantities of data, a data center is used to physically house data storage computing devices, such as the aforementioned e-mail servers and server farms, that are designed to store high volumes of data. A data center generally includes multiple physical containers in which one container can include several data storage computing devices grouped together.
In order to account for scenarios in which a particular data center suddenly becomes unavailable, i.e., one or more data storage computing devices housed within the data center suddenly lose network connectivity, other data centers, implemented within the same data network as the unavailable data center, can be used to retrieve data stored at the unavailable data center. For instance, using data replication procedures, each interconnected data center, including the aforementioned unavailable data center, can synchronously/asynchronously create replicated versions of their respective data (using their respective data storage computing devices) for distribution among the different interconnected data centers. Using replicated versions of data in this manner allows an application to maintain continued access to pertinent data objects, despite the sudden unavailability of a particular data center that initially stored the pertinent data objects.
Although data replication procedures do provide the benefit of backing up valuable data, the duplication of data objects in this fashion can potentially impact the performance of an application seeking access to a particular data object, e.g., when synchronous approaches are utilized. In some instances, the duplication of data objects can actually increase the data storage costs of each data center involved in data replication procedures. For instance, during data replication procedures, a data object stored at one particular data center can be replicated and communicated to a different data center, thereby creating at least two copies of each data object that is initially stored at one data center.
Accordingly, given (1) the physical space limitations of a given data center, and (2) the limited computational resources available to data storage computing devices housed therein, the ability of a data center to efficiently store data will be compromised as the demand for more data storage increases. Also, given the limited availability of land in general, as well as the rising costs for such land and data storage computing devices, creating more data centers is clearly not a viable solution. Indeed, the need to efficiently economize existing data storage practices is paramount so that applications can store/retrieve data in a manner that does not harm a user's experience with a particular application.